import { createPinia, defineStore } from '@/cores/pinia';

export default defineStore('todoList', {
  state: () => ({
    todos: [],
    filter: 'all',
    nextId: 0,
  }),
  actions: {
    addTodo(text) {
      this.todos.push({
        id: this.nextId++,
        text,
        isFinished: false,
      });
    },
    toggleTodo(id) {
      this.todos = this.todos.map((todo) => {
        if (todo.id === id) {
          todo.isFinished = !todo.isFinished;
        }
        return todo;
      });
    },
    removeTodo(id) {
      this.todos = this.todos.filter((todo) => todo.id !== id);
    },
  },
  getters: {
    finishedTodos(state) {
      return this.todos.filter((todo) => todo.isFinished);
    },
    unfinishedTodos(state) {
      return this.todos.filter((todo) => !todo.isFinished);
    },
    filteredTodos(state) {
      switch (this.filter) {
        case 'all':
          return this.todos;
        case 'finished':
          return this.finishedTodos;
        case 'unfinished':
          return state.unfinishedTodos;
      }
    },
  },
});
